package com.rightsidetech.activity.service;

import com.github.pagehelper.PageInfo;
import com.rightsidetech.activity.dto.request.*;
import com.rightsidetech.activity.dto.response.*;
import com.rightsidetech.activity.entity.ActCouponActivity;
import com.rightsidetech.activity.entity.ActCouponActivityStatis;
import com.rightsidetech.commom.base.DelReq;
import com.rightsidetech.commom.base.ResponseData;

import java.util.List;

/**
 * @Author: yhr
 * @Date: 2021-12-21 13:31
 */
public interface ActCouponService {
    ResponseData<PageInfo<ActCouponBaseResp>> page(ActCouponBasePageReq req);

    ResponseData saveCouponBase(ActCouponBaseSaveReq req, Long loginId, String loginName);

    ResponseData updateCouponBase(ActCouponBaseUpdateReq req, Long loginId,String loginName);

    ResponseData delCouponSBase(DelReq req,Long loginInfoId,String loginName);

    ResponseData<PageInfo<ActCouponActivityPageResp>> activityPage(ActCouponActivityPageReq req);

    ResponseData<ActCouponActivityInfoResp> activityInfo(Long activityId);

    ActCouponActivity getActivityByActivityId(Long activityId);

    ResponseData saveActivity(ActCouponActivitySaveReq req, Long loginId, String loginName);

    ResponseData updateActivity(ActCouponActivityUpdateReq req,Long loginId, String loginName);

    ResponseData reject(ActCouponActivityStatusReq req,Long loginId,String loginName);

    ResponseData check(Long id,Long loginId,String loginName);

    ResponseData delActivity(Long id,Long loginId,String loginName);

    ResponseData generate(Long id,Long loginId,String loginName);


    ResponseData<PageInfo<ActReceivePageResp>> receivePage(ActUserCouponReq req);

    ResponseData<PageInfo<ActCouponCountPageResp>> couponCount(ActCouponCountReq req);

    ResponseData couponClose(Long id,Long loginId,String loginName);


    int selectCount(Long storeId, Long agentId);

    void updateStatusByEndTime();

    ResponseData<PageInfo<ActUserCouponResp>> selectStoreCoupon(ActUserCouponReq req);

    ResponseData<PageInfo<ActUserGetCouponResp>> selectUserCoupon(ActUserCouponReq req);

    ResponseData<PageInfo<ActEntityCouponResp>> selectEntityCoupon(ActEntityCouponReq req);

    ActCouponActivity findByid(Long activityId);

    List<Long> findStatisActivityId();

    Long findCountByActivityId(Long activityId,Byte status);

    ResponseData saveActivityStatis(ActCouponActivityStatis statis);

}
